热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

创作者|字面_RabbitMQ入门阿里云服务器安装RabbitMQ

篇首语:本文由编程笔记#小编为大家整理,主要介绍了RabbitMQ入门--阿里云服务器安装RabbitMQ相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了RabbitMQ入门 -- 阿里云服务器安装RabbitMQ相关的知识,希望对你有一定的参考价值。




📢📢📢📣📣📣

哈喽!大家好,我是【Bug 终结者,【CSDNJava领域优质创作者】🏆,阿里云专家博主🏆,51CTO人气博主🏆,InfoQ写作专家🏆

一位上进心十足,拥有极强学习力的【Java领域博主】😜😜😜

🏅【Bug 终结者】博客的领域是【面向后端技术】的学习,未来会持续更新更多的【后端技术】以及【学习心得】。 偶尔会分享些前端基础知识,会更新实战项目,面向企业级开发应用!
🏅 如果有对【后端技术】、【前端领域】感兴趣的【小可爱】,欢迎关注【Bug 终结者】💞💞💞


❤️❤️❤️ 感谢各位大可爱小可爱! ❤️❤️❤️



文章目录


  • 一、什么是MQ?
  • 二、什么是RabbitMQ?
  • 三、使用RabbitMQ的好处
    • ☁️解耦
    • ⛄异步
    • ⚡削峰/限流

  • 四、Linux环境下手动安装RabbitMQ
    • 🚡环境准备
    • ♻️安装并启动RabbitMQ

  • 五、手动安装RabbitMQWeb管理界面和授权
    • ⌛安装并启动RabbitMQ管理插件
    • 😃添加账户
    • ✳️再次测试访问

  • 六、Linux环境下Docker安装RabbitMQ
    • ⌛安装Docker
    • 🗳️配置阿里云加速镜像
    • ♨️安装并启动RabbitMQ
    • ❇️测试RabbitMQ

  • ⛵小结


一、什么是MQ?

消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已。


其主要用途:不同进程Process/线程Thread之间通信。

队列是一种先进先出的结构:FIFO

把要传输的数据放在队列中

把数据放到消息队列叫生产者

从消息队列取出消息叫做消费者


二、什么是RabbitMQ?

RabbitMQ是一套开源(MPL)的消息队列服务软件,是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。


RabbitMQ的特性



  • 可伸缩性:集群服务
  • 消息持久化:从内存持久化消息到硬盘,再从硬盘加载到内存


三、使用RabbitMQ的好处

☁️解耦

系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码,过于麻烦!

系统A可以生成一个id,然后系统B需要这个id,系统A去调用了系统B

过了段时间,系统C说也要系统A的id,那么这时接触系统B的引用,去讲id传给系统C

这时又来了系统D,系统D也要系统A的id,系统A又解除了系统C,去调用了系统D,反反复复,很麻烦

系统A的负责人觉得改来改去太麻烦了,没意思,跑路了。

过段时间,公司来了位大佬,大佬说将系统A的id,存入消息队列,谁需要谁去拿,这样系统A就不用来回改动了,完美解决了参数调用问题!

系统A不关心谁去调用id,只负责生产数据并存入消息队列,其它系统即使挂了或请求超时,也跟系统A没有任何关系

这样就实现了系统A、B、C、D之间的解耦!


⛄异步

再来看看这种情况,系统A还是直接调用系统B、C、D

系统A:主要业务

系统B:短信业务

系统C:邮箱业务

系统D:处理后续业务

系统A下单成功后会去调用系统B,但是如果一个一个的调用,会大大的降低效率,假设每个业务执行时间100ms,那么4个业务执行完毕就是400ms,这种就被称为阻塞执行

那么我们的消息队列采用了异步机制,当我们下单完成后,会去异步的调用其它业务,会极大的降低系统的执行时间,提升效率!


⚡削峰/限流

例如:双十一大促销,这时的流量是很大很大的,并发很高,比如每秒5000个请求,假设现在又3台机器处理,并且每台机器每秒只能处理1500次请求,那么多出来的请求500请求,会将系统搞垮的,这时我们可以将多出来的请求放入消息队列中

这样即使每秒有10000个请求,也不会将系统搞垮,会在消息队列中等待,由系统去分配请求处理


四、Linux环境下手动安装RabbitMQ

🚡环境准备

阿里云Centos7.6服务器

lsb_release -a

在2022年5月,RabbitMQ官方发布推文宣称最新的版本已经不支持Centos7.x系列,但是我们可以通过下载之前支持的版本来部署!



下载RabbitMQ RPM包


RabbitMQ下载

下载成功如下



下载ErLang RPM包


这里需要注意,下载的版本要和RabbitMQ对应,必须支持下载的ErLang版本

我们找到下载的是 3.8.13 ,支持的最低是 22.3 最高是 23.x

下载ErLange

点击Download下载或单机wget复制下在Linux下 下载



使用FileZilla上传至阿里云服务器


阿里云服务器在 /usr/local 下新建 rabbitmq 文件夹

上传完成



安装ErLang


# 解压erlang文件
rpm -Uvh erlang-23.2.7-2.el7.x86_64.rpm
#安装erlang
yum install -y erlang



查看erlang版本


erl -v


♻️安装并启动RabbitMQ

在安装RabbitMQ之前要安装一个插件

yum install -y socat



解压并安装RabbitMQ


# 解压
rpm -Uvh rabbitmq-server-3.8.13-1.el8.noarch.rpm
# 安装
yum install -y rabbitmq-server



启动RabbitMQ服务


# 启动服务
systemctl start rabbitmq-server
# 查看当前的运行状态
systemctl status rabbitmq-server
# 重启服务
systemctl restart rabbitmq-server
# 停止服务
systemctl stop rabbitmq-server

可以看到,启动成功!


五、手动安装RabbitMQWeb管理界面和授权

⌛安装并启动RabbitMQ管理插件

# 安装RabbitMQWeb管理插件
rabbitmq-plugins enable rabbitmq_management
# 安装完成后重启rabbitmq服务
systemctl restart rabbitmq-server

启动成功,默认Web页面占用端口为 15672,我们去阿里云服务器控制台开放此端口



测试访问


浏览器输入 http://您的ip地址:15672

出现如下界面

默认登录账号密码 guest guest 登录测试

这个意思是我们只能通过本地来登录guest 账户

下面给出解决方案


😃添加账户

# 添加一个用户
rabbitmqctl add_user admin admin
# 将用户设置为admin权限
rabbitmqctl set_user_tags admin administrator


✳️再次测试访问

访问成功,手动安装成功!


六、Linux环境下Docker安装RabbitMQ

⌛安装Docker



先查看本机是否存在Docker,删除旧版本Docker


查看docker 版本

docker version

没有docker,我们执行以下命令,删除残余文件

yum remove docker \\
docker-client \\
docker-client-latest \\
docker-common \\
docker-latest \\
docker-latest-logrotate \\
docker-logrotate \\
docker-engine

进入Linux根目录,安装Docker

# 安装yum-utils包(提供yum-config-manager 实用程序)并设置稳定的存储库。
yum install -y yum-utils
# 安装阿里云配置
yum-config-manager \\
--add-repo \\
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装Docker 最新引擎

yum install docker-ce docker-ce-cli containerd.io

输入y确认即可!


🗳️配置阿里云加速镜像

打开阿里云控制台,弹性计算 --> 容器与镜像服务

打开之后选择 镜像工具 --> 镜像加速器,复制内容即可





进入Linux服务器根据步骤配置镜像加速器


# 创建docker文件夹
sudo mkdir -p /etc/docker
# 打开文件并配置内容
sudo tee /etc/docker/daemon.json <<-&#39;EOF&#39;
"registry-mirrors": ["https://pfjide5p.mirror.aliyuncs.com"]
EOF

# 重启服务
sudo systemctl daemon-reload
# 启动docker
sudo systemctl restart docker

新建文件夹

配置内容&#xff0c;并重启服务

根据步骤一步步创建即可&#xff01;


♨️安装并启动RabbitMQ

# 获取镜像&#xff0c;这个是带着web页面的
docker pull rabbitmq:management
# 运行 rabbitmq 并映射端口 设置默认账户密码admin
docker run -di --name myrabbit -e RABBITMQ_DEFAULT_USER&#61;admin -e RABBITMQ_DEFAULT_PASS&#61;admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management


❇️测试RabbitMQ

浏览器输入 http://您的ip地址:15672 并输入admin admin

出现如下界面

至此&#xff0c;在Docker内安装RabbitMQ完成&#xff01;


⛵小结

以上就是【Bug 终结者】对RabbitMQ入门 – 阿里云服务器安装RabbitMQ简单的概述&#xff0c;RabbitMQ是很常用的中间件&#xff0c;使用它&#xff0c;可提高程序的性能&#xff0c;底层使用通道&#xff0c;多路复用等&#xff0c;完美的利用CPU完成任务&#xff0c;RabbitMQ可承受高并发&#xff0c;拥有高性能&#xff0c;可谓是开发利器&#xff01;



如果这篇【文章】有帮助到你&#xff0c;希望可以给【Bug 终结者】点个赞&#x1f44d;&#xff0c;创作不易&#xff0c;如果有对【后端技术】、【前端领域】感兴趣的小可爱&#xff0c;也欢迎关注❤️❤️❤️ 【Bug 终结者】❤️❤️❤️&#xff0c;我将会给你带来巨大的【收获与惊喜】&#x1f49d;&#x1f49d;&#x1f49d;&#xff01;



推荐阅读
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 重入锁(ReentrantLock)学习及实现原理
    本文介绍了重入锁(ReentrantLock)的学习及实现原理。在学习synchronized的基础上,重入锁提供了更多的灵活性和功能。文章详细介绍了重入锁的特性、使用方法和实现原理,并提供了类图和测试代码供读者参考。重入锁支持重入和公平与非公平两种实现方式,通过对比和分析,读者可以更好地理解和应用重入锁。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 本文介绍了在Android开发中使用软引用和弱引用的应用。如果一个对象只具有软引用,那么只有在内存不够的情况下才会被回收,可以用来实现内存敏感的高速缓存;而如果一个对象只具有弱引用,不管内存是否足够,都会被垃圾回收器回收。软引用和弱引用还可以与引用队列联合使用,当被引用的对象被回收时,会将引用加入到关联的引用队列中。软引用和弱引用的根本区别在于生命周期的长短,弱引用的对象可能随时被回收,而软引用的对象只有在内存不够时才会被回收。 ... [详细]
  • 本文介绍了如何通过维持两个堆来获取一个数据流中的中位数。通过使用最大堆和最小堆,分别保存数据流中较小的一半和较大的一半数值,可以保证两个堆的大小差距为1或0。如果数据流中的数量为奇数,则中位数为较大堆的最大值;如果数量为偶数,则中位数为较大堆的最大值和较小堆的最小值的平均值。可以使用优先队列来实现堆的功能。本文还提供了相应的Java代码实现。 ... [详细]
  • rabbitmq杂谈
    rabbitmq中的consumerTag和deliveryTag分别是干啥的,有什么用?同一个会话,consumerTag是固定的可以做此会话的名字,deliveryTag每次接 ... [详细]
  • RabbitMQ的消息持久化处理
    1、RabbitMQ的消息持久化处理,消息的可靠性是RabbitMQ的一大特色,那么RabbitMQ是如何保证消息可靠性的呢——消息持久化。2、auto ... [详细]
  • 讨伐Java多线程与高并发——MQ篇
    本文是学习Java多线程与高并发知识时做的笔记。这部分内容比较多,按照内容分为5个部分:多线程基础篇JUC篇同步容器和并发容器篇线程池篇MQ篇本篇 ... [详细]
  •  Rabbitmq是对AMQP协议的一种实现。使用范围也比较广泛,主要用于消息异步通讯。 ... [详细]
  • RabbitMQ消息中间件快速入门:SpringBoot整合生产者与消费者
    前言本章我们来一次快速入门RabbitMQ——生产者与消费者。需要构建一个生产端与消费端的模型。什么意思呢?我们的生产者发送一条消息,投递到RabbitMQ集群也就是Broker。 ... [详细]
  • SpringBoot和RabbitMq集成的时候,引入compile(org.springframework.boot:spring-boot-starter-amqp)在运行 ... [详细]
  • rabbitmq 为什么是15672_RabbitMQ~消息的产生和管理(15672)
    上一讲说了rabbitmq在windows环境的部署,而今天主要说一下消息在产生后,如何去查看消息,事实上,rabbitmq为我们提供了功能强大的管理插件,我们只要开启这个插件即可 ... [详细]
  • CentOs 7.3中搭建RabbitMQ 3.6单机多实例服务的步骤与使用
    CentOs7.3中搭建RabbitMQ3.6单机多实例服务的步骤与使用-RabbitMQ简介RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户 ... [详细]
  • 分布式消息_58分布式消息队列WMB设计与实践
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了58分布式消息队列WMB设计与实践相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Linux(阿里云服务器)安装RabbitMQ
    目录安装前的说明安装Socat安装Erlang安装RabbitMQ配置阿里云开放端口启动访问添加用户安装前的说明安装RabbitMQ前需要先安装Socat、Er ... [详细]
author-avatar
laoshu仔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有